<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h1>{{msg}}</h1>
        <!--第三步，在页面上使用组件-->
        <school></school>
        <hr>
        <student></student>

        <student></student><!--组件可以方便复用，只需要再写一个标签-->

        <hr>

        <hello></hello>
    </div>
 
    <script>
        /*
        使用组件3步：
        1.创建组件，Vue.extend
        2.把组件注册到vm， components
        3.在模板中使用组件, <xxx>  xxx为组件注册时的名称
        */
        Vue.config.productionTip = false

        //第一步 创建school组件
        let school = Vue.extend({ //Vue.extend()传入一个配置对象option，option与vm的配置对象几乎一样
            //el: "#school", //只有new Vue()可以用el配置，组件用el配置会报错；最终所有组件都会被一个vm管理，由vm指定组件服务的容器
            template: `
                <div>
                    <h2>学校名称：{{schoolName}}</h2>
                    <h2>学校地址：{{address}}</h2>
                    <button @click="showSchoolName">点我提示学校名</button>
                </div>
            `,//指定组件的模板，必须有一个根标签
            data() {  //组件的data配置项必须写成函数形式，写成对象形式会报错（防止组件复用时因浅拷贝被连带修改）
              return {
                schoolName: 'shanggg',
                address: 'bj',
              }
            },
            methods: {
                showSchoolName() {
                    alert(this.schoolName)
                }
            }
        })
        //第一步 创建student组件
        let student = Vue.extend({ 
            template: `
                <div>
                    <h2>学生名称：{{studentName}}</h2>
                    <h2>学生地址：{{age}}</h2>
                </div>
            `,
            data() {
              return {
                studentName: '张三',
                age: 18,
              }
            }
        })

        //创建hello组件
        let hello = Vue.extend({ 
            template: `
                <div>
                    <h2>全局{{msg}}</h2>
                </div>
            `,
            data() {
              return {
                msg: '你好啊',
              }
            }
        })
        //全局注册组件，所有vm都可以用
        Vue.component('hello', hello)
        
        //创建vm
        let vm = new Vue({
            el: "#root",
            data: {
                msg: "你好啊"
            },
            components: { //第二步.注册组件（局部注册，只有这个vm实例可以用注册的组件）
                school: school, //key是组件名称
                student ,//简写形式
            }
        })

    </script>
</body>
</html>